import {simpleGet} from "../utils/request";

export const specOptions = [
    {id:0, title:'单规格'},
    {id:1, title:'多规格'}
]

const initAttrValues = {
    image: '',
    cost_price: 0.00,
    ot_price: 0.00,
    price: 0.00,
    stock_num: null,
    bar_code: '',
    // weight: 0.00,
    // volume: 0.00,
}

/**
 * 生成多规格商品
 * @param productAttrs
 * @returns {*[]}
 */
export const makeAttrValues = (productAttrs) => {

    let paStr = JSON.stringify(productAttrs)
    productAttrs = JSON.parse(paStr)

    let table = []     //  将规格值存入数组

    for(let vo of productAttrs){

        if(vo.values.length < 1){   // 如果规格值为空，则不生成这个规格
            continue
        }

        if(table.length==0){   // 表格的第一行，直接插入数据
            for(let voo of vo.values){ // 当前规格的值
                let row = {}
                row.sku = [voo] // 将第一个规格值，以数组的形式存入字段sku中
                table.push(row)
            }

        }else{ // 此时table不为空，从第二行开始的写入规则

            // 新表格的行
            let rows = []

            // 循环取出table中的每一行数据
            for(let tr of table){

                // 将行数据转为字符串，消除引用
                let trStr = JSON.stringify(tr)

                for(let voo of vo.values){

                    // 将当前行按照规格值值进行拆分，形成多行，存入rows中，替换掉当前行
                    let row = JSON.parse(trStr)
                    // 对当前行的sku追加新的规格值
                    row.sku.push(voo)
                    // 将新的行存入rows中
                    rows.push(row)
                }
            }

            // 用rows取代原来的table
            table = rows

        }

    }

    // 对形成的table进行再处理，在每行加入可以编辑的区域

    let lastTable = []
    table.forEach((vo, index, arr) => {
        lastTable.push(Object.assign(vo, initAttrValues))
    })

    return lastTable

}

/**
 * 根据pid获取商品分类列表
 * @param pid
 */
export const getCatesByPid = async (pid=0) => {
    const {items} = await simpleGet("/goodsCate/list", {pid:pid})
    return items
}

/**
 * 商品分类页样式
 * @returns {Promise<*>}
 */
export const getGoodsCatePage = async () => {
    const {info} = await simpleGet("/goodsCate/diyPage")
    return info
}

/**
 * 不分页列表
 * @param params
 * @returns {Promise<unknown>}
 */
export const getLimitGoods = (params) => {
    return simpleGet('/goods/list', params)
}

/**
 * 商品详情
 * @param id
 */
export const getGoodsInfo = async (id) => {
    const {info} = await simpleGet('/goods/find', {id})
    return info
}



